從 Day3 到 Day7,我們花了五天的時間大略地過完了設備和用戶數據庫 (device inventory database 和 user/group database)、非特權網路 (Unprivileged network and RADIUS) 和建立在 Google Front-end (GFE) 之上,負責執行驗證、授權和分流的 Access Proxy。
接下來幾天,我們來講剩下的也是授權過程中最重要的部分——Access Control,組件包含 Trust Inference、Access Control Engine、Pipeline,和 Certificate Issuer(但論文裡沒提到這個組件,所以本文不寫它)。
圖 1. Access Control 架構概覽 01 (source: https://www.beyondcorp.com/)
圖 2. Access Control 架構概覽 02 (source: How Google did it: "Design to Deployment at Google")
一樣,我們從最基本的開始學習,從知道它是什麼開始 (What),明天再去看實踐細節 (How)。
本篇內容出自論文,詳見出處:
圖 3. Trust Inference (source: https://www.beyondcorp.com/)
Trust Inference 是一個負責動態分析並分配信任等級給用戶或設備的元件。
要訪問指定資源,用戶或設備會被分配到一個信任等級 (Trust Tier)。其信任等級需要大於等於指定資源的最小信任需求才能順利訪問。
Trust Inference 便是負責動態分析並分配信任等級給用戶或設備的元件。
那他是根據什麼來爲用戶或設備分配信任等級的呢?Trust Inference 是根據 Device Inventory Service 中記錄的用戶或設備數據來指派信任等級。
作爲核心中的核心,這裡要插隊講一下什麼是 Device Inventory Service。根據 BeyondCorp 官網給出的定義:
Device Inventory Service is a system that continuously collects, processes, and publishes changes about the state of known devices. Device Inventory Service 是一個系統,負責持續收集、處理並發佈已知設備的狀態變更。
如果把圖 1. 和圖 2. 拿來一起比較觀察,那麼可以理解爲 Device Inventory Service 就是 pipeline 和 database 的集成。它會做的事情是負責從各種各樣的來源系統(比如 Active Directory、Configuration Management Systems、Corporate Asset Management 、網絡基礎設施如 ARP tables 等)收集信息,所收集的信息包括設備固有的信息(網卡、設備號等)以及設備上的運行信息(操作系統版本、補丁更新情況等)。
下圖是 Device Inventory Service 的架構圖:
圖 4. Device Inventory Service (source: How Google did it: "Design to Deployment at Google")
回到 Trust Inference。Trust Inference 是根據 Device Inventory Service 中記錄的用戶或設備數據來指派信任等級。例如,OS 未更新的設備可能會被降低信任等級。特定類別的設備,例如特定型號的手機或平板電腦,可能會被分配到特定的信任等級。從新位置訪問應用程序的用戶可能會被分配到不同的信任等級。
信任等級會作為 Access Control Engine 的輸入的一部分被使用。
圖 5. Access Control Engine (source: https://www.beyondcorp.com/)
Access Proxy 中的 Access Control Engine 負責根據每個請求為企業應用程序提供服務級別的授權。
授權決策會對用戶、用戶所屬的群組、設備證書以及設備元數據提出斷言。必要時,Access Control Engine 還可以執行基於位置的訪問控制。用戶和設備的信任等級也包含在此授權決策中。舉例來說,可以限制只有使用工程設備的全職工程師才可以訪問 Google bug tracking system。而對於財務應用程序,可以限制只有使用非工程設備的全職和兼職員工、並且在財務中心組中才具有財務訪問權限。
此外,Access Control Engine 還可以限制應用程序的細粒度訪問政策。例如,讀取 Google bug tracking system 所需要的權限可能較寫入的權限寬鬆。
Access Control Engine 的主要職責是將來自 Device Inventory Service 的設備元數據、用戶/群組信息、用戶訪問上下文(如地理位置)以及信任等級作爲輸入,做出允許或拒絕訪問的決策,並將這一決策傳達給 Access Proxy。
圖 6. Pipeline (source: https://www.beyondcorp.com/)
Access Control Engine 不斷地接收由運行中的 pipeline 提供的信息,該 pipeline 會動態地提取有助於制定授權決策的信息,包括憑證白名單、用戶或設備的信任等級、用戶或設備元數據等。
至此,我們簡單地認識了 Access Control 中各組件是幹什麼的。但是具體是怎麼做到的呢?
明天!我們要繼續學習 Access Control ,聚焦於 How does it work,探討具體的 data processing pipeline。我們將從 Device Inventory Service 記錄了哪種數據開始,從用戶/設備的數據整合、 觸發 Trust Inference 判斷用戶/設備的信任等級,到作爲 Access Control Engine 的輸入。
圖 7. Access Control flow 01 (source: https://www.beyondcorp.com/)
圖 8. Access Control flow 02 (source: How Google did it: "Design to Deployment at Google")
明天見!
BTW 這幾天天氣真好,月明星稀的。今天週六公司補班,補的哪天我不知道,但 WFH 好快樂啊就是說哈哈哈哈
拜拜!